<!doctype html>



  


<html class="theme-next mist use-motion" lang="zh-Hans">
<head>
  <meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>









<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />















  
  
  <link href="/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" />




  
  
  
  

  
    
    
  

  
    
      
    

    
  

  

  
    
      
    

    
  

  
    
      
    

    
  

  
    
    
    <link href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic|Roboto Slab:300,300italic,400,400italic,700,700italic|Lobster Two:300,300italic,400,400italic,700,700italic|PT Mono:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css">
  






<link href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css" />

<link href="/css/main.css?v=5.1.1" rel="stylesheet" type="text/css" />


  <meta name="keywords" content="Ewan, PHP" />





  <link rel="alternate" href="/atom.xml" title="Ewan's Blog" type="application/atom+xml" />




  <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico?v=5.1.1" />






<meta name="description" content="The more effort ,the more lucky">
<meta property="og:type" content="website">
<meta property="og:title" content="Ewan&#39;s Blog">
<meta property="og:url" content="http://www.iooeo.com/page/14/index.html">
<meta property="og:site_name" content="Ewan&#39;s Blog">
<meta property="og:description" content="The more effort ,the more lucky">
<meta property="og:locale" content="zh-Hans">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Ewan&#39;s Blog">
<meta name="twitter:description" content="The more effort ,the more lucky">



<script type="text/javascript" id="hexo.configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '/',
    scheme: 'Mist',
    sidebar: {"position":"left","display":"always","offset":12,"offset_float":0,"b2t":false,"scrollpercent":false},
    fancybox: true,
    motion: true,
    duoshuo: {
      userId: '0',
      author: '博主'
    },
    algolia: {
      applicationID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":10},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    }
  };
</script>



  <link rel="canonical" href="http://www.iooeo.com/page/14/"/>





  <title>Ewan's Blog</title>
  





  <script type="text/javascript">
    var _hmt = _hmt || [];
    (function() {
      var hm = document.createElement("script");
      hm.src = "https://hm.baidu.com/hm.js?cea7ef9cbfe59c235bbe4bb0db874f5b";
      var s = document.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(hm, s);
    })();
  </script>










</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">

  
  
    
  

  <div class="container sidebar-position-left 
   page-home 
 ">
    <div class="headband"></div>

    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-wrapper">
  <div class="site-meta ">
    

    <div class="custom-logo-site-title">
      <a href="/"  class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">Ewan's Blog</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
      
        <p class="site-subtitle">Ewan's Blog | 杨依园技术博客 | 专注于PHP，涉及MySQL，Linux，Web，Nginx，Apache，Phalcon，Laravel，Redis，PostgreSql，Composer，Beanstalkd，Swoole</p>
      
  </div>

  <div class="site-nav-toggle">
    <button>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</div>

<nav class="site-nav">
  

  
    <ul id="menu" class="menu">
      
        
        <li class="menu-item menu-item-home">
          <a href="/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-home"></i> <br />
            
            首页
          </a>
        </li>
      
        
        <li class="menu-item menu-item-php">
          <a href="/categories/PHP/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-paper-plane"></i> <br />
            
            php
          </a>
        </li>
      
        
        <li class="menu-item menu-item-yii">
          <a href="/categories/PHP/Yii2/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-star"></i> <br />
            
            Yii2
          </a>
        </li>
      
        
        <li class="menu-item menu-item-swoole">
          <a href="/categories/PHP/Swoole/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-rocket"></i> <br />
            
            swoole
          </a>
        </li>
      
        
        <li class="menu-item menu-item-python">
          <a href="/categories/python/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-space-shuttle"></i> <br />
            
            python
          </a>
        </li>
      
        
        <li class="menu-item menu-item-awesome">
          <a href="/categories/awesome/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-dashboard"></i> <br />
            
            awesome
          </a>
        </li>
      
        
        <li class="menu-item menu-item-about">
          <a href="/about/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-user"></i> <br />
            
            关于
          </a>
        </li>
      

      
        <li class="menu-item menu-item-search">
          
            <a href="javascript:;" class="popup-trigger">
          
            
              <i class="menu-item-icon fa fa-search fa-fw"></i> <br />
            
            搜索
          </a>
        </li>
      
    </ul>
  

  
    <div class="site-search">
      
  <div class="popup search-popup local-search-popup">
  <div class="local-search-header clearfix">
    <span class="search-icon">
      <i class="fa fa-search"></i>
    </span>
    <span class="popup-btn-close">
      <i class="fa fa-times-circle"></i>
    </span>
    <div class="local-search-input-wrapper">
      <input autocomplete="off"
             placeholder="搜索..." spellcheck="false"
             type="text" id="local-search-input">
    </div>
  </div>
  <div id="local-search-result"></div>
</div>



    </div>
  
</nav>



 </div>
    </header>

    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          <div id="content" class="content">
            
  <section id="posts" class="posts-expand">
    
      

  

  
  
  

  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
    <link itemprop="mainEntityOfPage" href="http://www.iooeo.com/2016/11/17/Firing！！！/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="Ewan">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/images/avatar.png">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Ewan's Blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/2016/11/17/Firing！！！/" itemprop="url">Firing！！！</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2016-11-17T16:06:39+08:00">
                2016-11-17
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/杂谈/" itemprop="url" rel="index">
                    <span itemprop="name">杂谈</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
              <span class="post-comments-count">
              <span class="post-meta-divider">|</span>
              <span class="post-meta-item-icon">
                <i class="fa fa-comment-o"></i>
              </span>
              
                <a href="/2016/11/17/Firing！！！/#SOHUCS" itemprop="discussionUrl">
                  <span id="url::http://www.iooeo.com/2016/11/17/Firing！！！/" class="cy_cmt_count" data-xid="2016/11/17/Firing！！！/" itemprop="commentsCount" ></span>
                </a>
              
            
          

          
          
             <span id="/2016/11/17/Firing！！！/" class="leancloud_visitors" data-flag-title="Firing！！！">
               <span class="post-meta-divider">|</span>
               <span class="post-meta-item-icon">
                 <i class="fa fa-eye"></i>
               </span>
               
                 <span class="post-meta-item-text">阅读次数 </span>
               
                 <span class="leancloud-visitors-count"></span>
             </span>
          

          

          

          

        </div>
      </header>
    

    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>经过两天的奋战，<code>Ewan&#39;s Blog</code> 终于与大家见面了。目前网站定位方向为技术性博客，可能稍后会有些栏目的调整，期待大家的关注。</p>
<p>之前也有做过自己的博客网站,经历了服务器到期,域名续费,赶上有段时间工作调整没时间整理,导致博客更新中断.而后一直有新建博客的想法,说到这个特别的感谢一下<a href="http://www.liuxiaojia.cc/" target="_blank" rel="noopener">胖佳</a> 在网站的搭建过程中的先锋精神和技术指导.还要感谢<a href="http://www.pythondev.org" target="_blank" rel="noopener">jarvan君</a>和<a href="http://old.tumiaoya.com/" target="_blank" rel="noopener">小白</a>的技术指导,说句实在话jarvan君是我工作以来对我帮助最大的一位,之前一起住学校宿舍、一起在一家公司上班,生活中是个老大哥、工作中亦师亦友的这种关系令我享受在其中.当然上面提到胖佳和小白那两只货是我在北京性格上很合得来的哥们,为此哥几个一周撸五次串也不为过.</p>
<p>在北京学习的那几个月是我人生的一个转折点,更是我人生一个新的起点.</p>
<p><em>后续会陆续将之前整理的博客文章搬迁过来,也会发表一些新的文章出来供大家分享学习</em></p>
<h3 id="既然有了一个好的起点，我们就跟要努力向前冲，Firing，Firing！！！"><a href="#既然有了一个好的起点，我们就跟要努力向前冲，Firing，Firing！！！" class="headerlink" title="既然有了一个好的起点，我们就跟要努力向前冲，Firing，Firing！！！"></a>既然有了一个好的起点，我们就跟要努力向前冲，Firing，Firing！！！</h3>
          
        
      
    </div>

    <div>
      
    </div>

    <div align="center">
      
    </div>

    <div>
      
    </div>

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
    <link itemprop="mainEntityOfPage" href="http://www.iooeo.com/2015/03/23/MySQL-存储例程/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="Ewan">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/images/avatar.png">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Ewan's Blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/2015/03/23/MySQL-存储例程/" itemprop="url">MySQL 存储例程</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2015-03-23T12:07:59+08:00">
                2015-03-23
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/MySQL/" itemprop="url" rel="index">
                    <span itemprop="name">MySQL</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
              <span class="post-comments-count">
              <span class="post-meta-divider">|</span>
              <span class="post-meta-item-icon">
                <i class="fa fa-comment-o"></i>
              </span>
              
                <a href="/2015/03/23/MySQL-存储例程/#SOHUCS" itemprop="discussionUrl">
                  <span id="url::http://www.iooeo.com/2015/03/23/MySQL-存储例程/" class="cy_cmt_count" data-xid="2015/03/23/MySQL-存储例程/" itemprop="commentsCount" ></span>
                </a>
              
            
          

          
          
             <span id="/2015/03/23/MySQL-存储例程/" class="leancloud_visitors" data-flag-title="MySQL 存储例程">
               <span class="post-meta-divider">|</span>
               <span class="post-meta-item-icon">
                 <i class="fa fa-eye"></i>
               </span>
               
                 <span class="post-meta-item-text">阅读次数 </span>
               
                 <span class="leancloud-visitors-count"></span>
             </span>
          

          

          

          

        </div>
      </header>
    

    <div class="post-body" itemprop="articleBody">

      
      

      
        
          <p>好高兴啊，Ewan学习进行时。mysql存储例程学习总结拿来共享喽。<br>
          <!--noindex-->
          <div class="post-button text-center">
            <a class="btn" href="/2015/03/23/MySQL-存储例程/#more" rel="contents">
              阅读全文 &raquo;
            </a>
          </div>
          <!--/noindex-->
        
      
    </div>

    <div>
      
    </div>

    <div align="center">
      
    </div>

    <div>
      
    </div>

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
    <link itemprop="mainEntityOfPage" href="http://www.iooeo.com/2014/10/13/laravel安装/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="Ewan">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/images/avatar.png">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Ewan's Blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/2014/10/13/laravel安装/" itemprop="url">laravel安装</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2014-10-13T17:58:50+08:00">
                2014-10-13
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/PHP/" itemprop="url" rel="index">
                    <span itemprop="name">PHP</span>
                  </a>
                </span>

                
                
                  ， 
                
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/PHP/Laravel/" itemprop="url" rel="index">
                    <span itemprop="name">Laravel</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
              <span class="post-comments-count">
              <span class="post-meta-divider">|</span>
              <span class="post-meta-item-icon">
                <i class="fa fa-comment-o"></i>
              </span>
              
                <a href="/2014/10/13/laravel安装/#SOHUCS" itemprop="discussionUrl">
                  <span id="url::http://www.iooeo.com/2014/10/13/laravel安装/" class="cy_cmt_count" data-xid="2014/10/13/laravel安装/" itemprop="commentsCount" ></span>
                </a>
              
            
          

          
          
             <span id="/2014/10/13/laravel安装/" class="leancloud_visitors" data-flag-title="laravel安装">
               <span class="post-meta-divider">|</span>
               <span class="post-meta-item-icon">
                 <i class="fa fa-eye"></i>
               </span>
               
                 <span class="post-meta-item-text">阅读次数 </span>
               
                 <span class="leancloud-visitors-count"></span>
             </span>
          

          

          

          

        </div>
      </header>
    

    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>近期貌似对 <code>laravel</code> 有使用的需求，就自己安装了一次，发现对于有些人来说确实有点文档不够全面的感觉，现将具体的安装方法总结如下。<br>Composer安装：</p>
<blockquote>
<p>Laravel 框架使用 Composer 来管理代码依赖性。<br>在Windows操作系统中，你可以使用 Composer 的Windows安装工具(<a href="https://getcomposer.org/Composer-Setup.exe)。" target="_blank" rel="noopener">https://getcomposer.org/Composer-Setup.exe)。</a><br>对PHP版本有要求(最好5.4.0以上)<br>laravel安装：<br>Composer安装完成后，在dos模式中，你的网站目录执行下面命令即可：<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ composer create-project laravel/laravel your-project-name</div></pre></td></tr></table></figure></p>
</blockquote>
<p>Composer会自动帮你下载Laravel及安装。<br>部署虚拟主机(Apache相关知识)：<br>如果之前对Apache的配置环境没有设置过：<br>(1) Apache配置设置，打开(路径看个人项目环境而定)<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">C:\wamp\bin\apache\apache2.4.9\conf\httpd.conf</div></pre></td></tr></table></figure></p>
<p>第512~513行，将默认的虚拟主机设置打开(默认是关闭的，前边#去掉即可)<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line"># Virtual hosts</div><div class="line">Include conf/extra/httpd-vhosts.conf</div></pre></td></tr></table></figure></p>
<p>(2) 配置站点，打开(路径看个人项目环境而定)<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf</div></pre></td></tr></table></figure></p>
<p>在其下方添加站点信息：<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">&lt;VirtualHost *:80&gt;</div><div class="line">        DocumentRoot &quot;c:/wamp/www/project/public&quot;</div><div class="line">        ServerName laravel.dev</div><div class="line">        ErrorLog &quot;logs/laravel.log&quot;</div><div class="line">        CustomLog &quot;logs/laravel.log&quot; common</div><div class="line">&lt;/VirtualHost&gt;</div></pre></td></tr></table></figure></p>
<p>(3) 将站点指向项目目录，打开(路径看个人项目环境而定)C:\Windows\System32\drivers\etc\hosts<br>在其下方添加站点信息：<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ 127.0.0.1         laravel.dev</div></pre></td></tr></table></figure></p>

          
        
      
    </div>

    <div>
      
    </div>

    <div align="center">
      
    </div>

    <div>
      
    </div>

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
    <link itemprop="mainEntityOfPage" href="http://www.iooeo.com/2014/09/17/MySQL安装dpkg错误解决方案/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="Ewan">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/images/avatar.png">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Ewan's Blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/2014/09/17/MySQL安装dpkg错误解决方案/" itemprop="url">MySQL安装dpkg错误解决方案</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2014-09-17T17:39:04+08:00">
                2014-09-17
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/MySQL/" itemprop="url" rel="index">
                    <span itemprop="name">MySQL</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
              <span class="post-comments-count">
              <span class="post-meta-divider">|</span>
              <span class="post-meta-item-icon">
                <i class="fa fa-comment-o"></i>
              </span>
              
                <a href="/2014/09/17/MySQL安装dpkg错误解决方案/#SOHUCS" itemprop="discussionUrl">
                  <span id="url::http://www.iooeo.com/2014/09/17/MySQL安装dpkg错误解决方案/" class="cy_cmt_count" data-xid="2014/09/17/MySQL安装dpkg错误解决方案/" itemprop="commentsCount" ></span>
                </a>
              
            
          

          
          
             <span id="/2014/09/17/MySQL安装dpkg错误解决方案/" class="leancloud_visitors" data-flag-title="MySQL安装dpkg错误解决方案">
               <span class="post-meta-divider">|</span>
               <span class="post-meta-item-icon">
                 <i class="fa fa-eye"></i>
               </span>
               
                 <span class="post-meta-item-text">阅读次数 </span>
               
                 <span class="leancloud-visitors-count"></span>
             </span>
          

          

          

          

        </div>
      </header>
    

    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <ul>
<li><p>Ewan在Ubuntu下安装MySQL的时候出现了一下错误问题：</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div></pre></td><td class="code"><pre><div class="line">start: Job failed to start</div><div class="line">invoke-rc.d: initscript mysql, action &quot;start&quot; failed.</div><div class="line">dpkg: error processing mysql-server-5.5 (--configure):</div><div class="line">subprocess installed post-installation script returned error exit status 1</div><div class="line">dpkg: dependency problems prevent configuration of mysql-server:</div><div class="line">mysql-server depends on mysql-server-5.5; however:</div><div class="line">Package mysql-server-5.5 is not configured yet.</div><div class="line">dpkg: error processing mysql-server (--configure):</div><div class="line">dependency problems - leaving unconfigured</div><div class="line">No apport report written because the error message indicates its a followup error from a previous failure.</div><div class="line">Errors were encountered while processing:</div><div class="line">mysql-server-5.5</div><div class="line">mysql-server</div><div class="line">E: Sub-process /usr/bin/dpkg returned an error code (1)</div></pre></td></tr></table></figure>
</li>
<li><p>经查证，现给出解决办法：<br>删除MySQL前，先删除/var/lib/mysql和/etc/mysql</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">$ sudo rm /var/lib/mysql/ -R</div><div class="line">$ sudo rm /etc/mysql/ -R</div><div class="line">$ sudo apt-get autoremove mysql* --purge</div><div class="line">$ sudo apt-get remove apparmor</div><div class="line">$ sudo apt-get install mysql-server mysql-common</div></pre></td></tr></table></figure>
</li>
</ul>

          
        
      
    </div>

    <div>
      
    </div>

    <div align="center">
      
    </div>

    <div>
      
    </div>

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
    <link itemprop="mainEntityOfPage" href="http://www.iooeo.com/2014/09/14/About-Me/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="Ewan">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/images/avatar.png">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Ewan's Blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/2014/09/14/About-Me/" itemprop="url">About Me</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2014-09-14T16:42:17+08:00">
                2014-09-14
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/杂谈/" itemprop="url" rel="index">
                    <span itemprop="name">杂谈</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
              <span class="post-comments-count">
              <span class="post-meta-divider">|</span>
              <span class="post-meta-item-icon">
                <i class="fa fa-comment-o"></i>
              </span>
              
                <a href="/2014/09/14/About-Me/#SOHUCS" itemprop="discussionUrl">
                  <span id="url::http://www.iooeo.com/2014/09/14/About-Me/" class="cy_cmt_count" data-xid="2014/09/14/About-Me/" itemprop="commentsCount" ></span>
                </a>
              
            
          

          
          
             <span id="/2014/09/14/About-Me/" class="leancloud_visitors" data-flag-title="About Me">
               <span class="post-meta-divider">|</span>
               <span class="post-meta-item-icon">
                 <i class="fa fa-eye"></i>
               </span>
               
                 <span class="post-meta-item-text">阅读次数 </span>
               
                 <span class="leancloud-visitors-count"></span>
             </span>
          

          

          

          

        </div>
      </header>
    

    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>欢迎大家访问Ewan’s Blog：<code>www.iooeo.com</code><br>博主姓名：<code>杨依园</code> | <code>Ewan</code><br>网名：<code>バ 小丑男°乄° 　　　?</code><br>绰号：<code>cola</code>、<code>杨一</code>、<code>一哥</code>、<code>猫叔</code>、<code>小杨</code>、<code>猿某人</code>、<code>酷头（莉姐送的~）</code><br>扣扣：<code>654846126</code><br>邮箱：<code>yuankess@sina.cn</code> | <code>654846126@qq.com</code><br>社交主页：<code>www.iooeo.com</code> | <code>ewan.coding.me</code> | <code>yangyiyuan.github.io</code><br>爱好：<code>玩游戏</code>、<code>听歌</code>、<code>看电影</code>、<code>骑车</code>、<code>滑冰</code>、<code>瞎折腾</code></p>
<h2 id="切换至炫酷版"><a href="#切换至炫酷版" class="headerlink" title="切换至炫酷版"></a><em><a href="http://www.iooeo.com/about/">切换至炫酷版</a></em></h2><h3 id="此处要用程序"><a href="#此处要用程序" class="headerlink" title="此处要用程序"></a>此处要用程序</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">历程: </div><div class="line">&gt; 2014年09月11日购买域名 www.iooeo.com</div><div class="line">&gt; 购买空间 搭建环境</div><div class="line">&gt; 2014年09月15日开通第一个web网站 www.iooeo.com</div><div class="line">&gt; 2016年11月15日 www.iooeo.com 完成升级</div><div class="line">&gt; 未完待续......</div></pre></td></tr></table></figure>

          
        
      
    </div>

    <div>
      
    </div>

    <div align="center">
      
    </div>

    <div>
      
    </div>

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
    <link itemprop="mainEntityOfPage" href="http://www.iooeo.com/2014/03/02/MySQL-触发器/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="Ewan">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/images/avatar.png">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Ewan's Blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/2014/03/02/MySQL-触发器/" itemprop="url">MySQL 触发器</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2014-03-02T10:20:42+08:00">
                2014-03-02
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/MySQL/" itemprop="url" rel="index">
                    <span itemprop="name">MySQL</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
              <span class="post-comments-count">
              <span class="post-meta-divider">|</span>
              <span class="post-meta-item-icon">
                <i class="fa fa-comment-o"></i>
              </span>
              
                <a href="/2014/03/02/MySQL-触发器/#SOHUCS" itemprop="discussionUrl">
                  <span id="url::http://www.iooeo.com/2014/03/02/MySQL-触发器/" class="cy_cmt_count" data-xid="2014/03/02/MySQL-触发器/" itemprop="commentsCount" ></span>
                </a>
              
            
          

          
          
             <span id="/2014/03/02/MySQL-触发器/" class="leancloud_visitors" data-flag-title="MySQL 触发器">
               <span class="post-meta-divider">|</span>
               <span class="post-meta-item-icon">
                 <i class="fa fa-eye"></i>
               </span>
               
                 <span class="post-meta-item-text">阅读次数 </span>
               
                 <span class="leancloud-visitors-count"></span>
             </span>
          

          

          

          

        </div>
      </header>
    

    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <h2 id="Ewan又来学习啦，mysql触发器个人学习感悟奉上。"><a href="#Ewan又来学习啦，mysql触发器个人学习感悟奉上。" class="headerlink" title="Ewan又来学习啦，mysql触发器个人学习感悟奉上。"></a>Ewan又来学习啦，mysql触发器个人学习感悟奉上。</h2><ul>
<li><p>1.触发器定义</p>
<blockquote>
<p>sql server里面对某个表的一定的操作，触发某种条件而执行的一段程序。它是一个特殊的存储过程。</p>
</blockquote>
</li>
<li><p>2.为什么使用触发器</p>
<blockquote>
<p>1）强制业务规则<br>2）审计跟踪 –用于跟踪网站区域流量<br>3）验证<br>4）完整性约束引用 –表的关系在项目整个生命周期中的稳定</p>
</blockquote>
</li>
<li><p>3.触发器基本语法<br><code>create trigger triggre_name trigger_time trigger_event on table_name for each row trigger_stmt;</code></p>
<blockquote>
<p>trigger_name：触发器名称；<br>trigger_time：触发时机，取值为before 或after；<br>trigger_event：触发事件，取值为 insert、update或 delete；<br>table_name：建立触发器的表名;<br>trigger_stmt：触发器程序体，可以是一句sql语句，或者用 begin 和 end 包含的多条sql语句。</p>
</blockquote>
</li>
<li><p>4.before与after详解</p>
<blockquote>
<p>before：(insert、update)可以对new进行修改，after不能对new进行修改。两者都不能修改old数据。<br>表插入字段值需要用new计算，只能用before，在别的表中记录插入成功记录或统计插入的条数用after。<br>after update 也就是执行完你的更新之后.再执行这个触发器的语句..<br>before update 就是执行完这个触发器的语句,再执行你的更新.<br>可以建立6种触发器，即：before insert、before update、before delete、after insert、after update、after delete<br><strong>**</strong>有一个限制是不能同时在一个表上建立2个相同类型的触发器，因此在一个表上最多建立6个触发器</p>
</blockquote>
</li>
<li><p>5,trigger_event详解</p>
<blockquote>
<p>msql除了对insert,update,delete 基本操作进行定义外，还定义了load data和replace语句，这两种语句也能引起<br>上述6中类型的触发器的触发。<br>load data 语句用于将一个文件装入到一个数据表中，相当与一系列的 insert 操作。<br>replace语句一般来说和insert语句很像,只是在表中有primary key或unique 索引时，如果插入的数据和原来 primary<br>key或unique索引一致时，会先删除原来的数据，然后增加一条新数据，也就是说，一条 replace 语句有时候等价于一条 update。<br>insert 型触发器：插入某一行时激活触发器，可能通过 insert、load data、replace 语句触发；<br>update 型触发器：更改某一行时激活触发器，可能通过 update 语句触发；<br>delete 型触发器：删除某一行时激活触发器，可能通过 delete、replace 语句触发。</p>
</blockquote>
</li>
<li><p>6.begin … end详解</p>
<blockquote>
<p>在mysql中，begin … end 语句的语法为：<br><code>begin
[statement_list]
end</code><br>statement_list 代表一个或多个语句的列表，列表内的每条语句都必须用分号（;）来结尾。<br>解释器遇到 statement_list 中的分号后就开始执行，然后会报出错误，因为没有找到和 begin匹配的end<br>delimiter命令，它是一条命令，不需要语句结束标识，语法为：<br><code>delimiter new_delemiter</code><br>new_delemiter 可以设为1个或多个长度的符号，默认的是分号（;），我们可以把它修改为其他符号，如管道符：delimiter |<br>在这之后的语句，以分号结束，解释器不会有什么反应，只有遇到了管道符，才认为是语句结束。注意，使用完之后，我们还<br>应该记得把它给修改回来。</p>
</blockquote>
</li>
<li><p>7.new与old详解</p>
<blockquote>
<p>new关键字，和mysql中的 inserted和deleted类似，mysql中定义了new和old，用来表示<br>触发器的所在表中，触发了触发器的那一行数据。<br>具体地：<br>在insert型触发器中，new 用来表示将要（before）或已经（after）插入的新数据；<br>在 update型触发器中，old用来表示将要或已经被修改的原数据，new用来表示将要或已经修改为的新数据；<br>在 delete 型触发器中，old用来表示将要或已经被删除的原数据；<br>使用方法： new.columnName （columnName 为相应数据表某一列名）;<br>另外，old 是只读的，而 new 则可以在触发器中使用 set 赋值，这样不会再次触发触发器，造成循环调用。</p>
</blockquote>
</li>
<li><p>8.删除触发器</p>
<blockquote>
<p>和删除数据库、删除表格一样，删除触发器的语法如下：<br><code>drop trigger trigger_name;</code><br>查看现有的触发器：<br><code>show triggers\G;</code></p>
</blockquote>
</li>
<li><p>9.触发器的执行顺序</p>
<blockquote>
<p>我们建立的数据库一般都是 InnoDB 数据库，其上建立的表是事务性表，也就是事务安全的。这时，若SQL语句或触发器执行失败，mysql会回滚事务，如下：<br>1)如果before触发器执行失败，sql无法正确执行。<br>2)sql执行失败时，after型触发器不会触发。<br>3)after类型的触发器执行失败，sql会回滚。</p>
</blockquote>
</li>
</ul>
<h4 id="触发器可以大大减少只为确保数据库引用完整性和业务规则而编写的代码量。"><a href="#触发器可以大大减少只为确保数据库引用完整性和业务规则而编写的代码量。" class="headerlink" title="触发器可以大大减少只为确保数据库引用完整性和业务规则而编写的代码量。"></a>触发器可以大大减少只为确保数据库引用完整性和业务规则而编写的代码量。</h4><h4 id="mysql视图学习至此告一段落，以上内容如有语法结构错误，请指出或给予相应的解决方案。"><a href="#mysql视图学习至此告一段落，以上内容如有语法结构错误，请指出或给予相应的解决方案。" class="headerlink" title="mysql视图学习至此告一段落，以上内容如有语法结构错误，请指出或给予相应的解决方案。"></a>mysql视图学习至此告一段落，以上内容如有语法结构错误，请指出或给予相应的解决方案。</h4>
          
        
      
    </div>

    <div>
      
    </div>

    <div align="center">
      
    </div>

    <div>
      
    </div>

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
    <link itemprop="mainEntityOfPage" href="http://www.iooeo.com/2013/11/13/MySQL-视图/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="Ewan">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/images/avatar.png">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Ewan's Blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/2013/11/13/MySQL-视图/" itemprop="url">MySQL 视图</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2013-11-13T18:14:04+08:00">
                2013-11-13
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/MySQL/" itemprop="url" rel="index">
                    <span itemprop="name">MySQL</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
              <span class="post-comments-count">
              <span class="post-meta-divider">|</span>
              <span class="post-meta-item-icon">
                <i class="fa fa-comment-o"></i>
              </span>
              
                <a href="/2013/11/13/MySQL-视图/#SOHUCS" itemprop="discussionUrl">
                  <span id="url::http://www.iooeo.com/2013/11/13/MySQL-视图/" class="cy_cmt_count" data-xid="2013/11/13/MySQL-视图/" itemprop="commentsCount" ></span>
                </a>
              
            
          

          
          
             <span id="/2013/11/13/MySQL-视图/" class="leancloud_visitors" data-flag-title="MySQL 视图">
               <span class="post-meta-divider">|</span>
               <span class="post-meta-item-icon">
                 <i class="fa fa-eye"></i>
               </span>
               
                 <span class="post-meta-item-text">阅读次数 </span>
               
                 <span class="leancloud-visitors-count"></span>
             </span>
          

          

          

          

        </div>
      </header>
    

    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <p>Ewan之前研究mysql实际操作，个人感悟拿来共享一下。<br>1.视图定义</p>
<blockquote>
<p>视图是从一个或几个基本表导出的虚拟表，意思就是说视图只是依附在基本表上的虚拟表。</p>
</blockquote>
<p>2.视图与基本表的联系与区别</p>
<blockquote>
<p>视图是基本表的查询结果，基本表的数据变了，视图的结果自然就改变了。<br>当然试图改变也会影响到基本表。视图的增删改会影响基本表，但视图不总是能增删盖的哦。在视图的数据与基本表的数据一一对应的时候可以修改，但对于视图的insert应注意，视图必须包含基本表的中没有的默认值的列。</p>
</blockquote>
<p>3.视图的优点</p>
<blockquote>
<p>简化sql查询语句<br>可以更好的进行权限把控<br>适合大数据分表时使用   <em>虽然大数据分表有很多种方法，但视图无疑是个不错的选择哦</em></p>
</blockquote>
<p>4.视图的基本语法<br>create view （视图名） as （select 语句）； <em>是不是很简单啊？但实际应用起来就不是表面这样喽</em><br>5.视图的操作</p>
<blockquote>
<p>修改视图<br>alert view （视图名） as（select 语句）；<br>删除视图<br>drop view (视图名)；</p>
</blockquote>
<p>6.使用algorithm属性优化mysql视图</p>
<blockquote>
<p>在这里algorithm有3个设置可优化视图，分别是merge,temptable,undefined<br>格式为：<code>algorithm = merge/temptable/undefined</code><br>merge算法使mysql将执行视图时传入的任何字句合并到视图的查询定义中，换句话说，视图定义和select查询语句会合并成新的查询语句。<br>当视图指定temptable算法时，创建视图的同时创建视图相对应的temporary表，然后查询视图的语句会从该临时表查取数据。<br>merge和temptable区别就是：merge最终查的是基本表，而temptable查的是虚拟表。merge算法效率要比temptable要高。<br>undefined：顾名思义，为定义，系统会自动选择。</p>
</blockquote>
<p>7.查看视图信息</p>
<blockquote>
<p>可以使用：show create view (视图名)<br>可以使用：DESCRIBE（视图名）<br>可以使用：information_schema数据库包括一个views表，包含一下内容：<br>select <em> from information_schema.views\G  </em>注意是G要大写*</p>
</blockquote>
<p>mysql视图学习至此告一段落，以上内容如有语法结构错误，请指出或给予相应的解决方案。</p>

          
        
      
    </div>

    <div>
      
    </div>

    <div align="center">
      
    </div>

    <div>
      
    </div>

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </article>


    
      

  

  
  
  

  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
    <link itemprop="mainEntityOfPage" href="http://www.iooeo.com/2013/11/13/MySQL-优化篇之SQL优化/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="Ewan">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/images/avatar.png">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Ewan's Blog">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">
                
                <a class="post-title-link" href="/2013/11/13/MySQL-优化篇之SQL优化/" itemprop="url">MySQL 优化篇之SQL优化</a></h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2013-11-13T07:40:22+08:00">
                2013-11-13
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/MySQL/" itemprop="url" rel="index">
                    <span itemprop="name">MySQL</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
              <span class="post-comments-count">
              <span class="post-meta-divider">|</span>
              <span class="post-meta-item-icon">
                <i class="fa fa-comment-o"></i>
              </span>
              
                <a href="/2013/11/13/MySQL-优化篇之SQL优化/#SOHUCS" itemprop="discussionUrl">
                  <span id="url::http://www.iooeo.com/2013/11/13/MySQL-优化篇之SQL优化/" class="cy_cmt_count" data-xid="2013/11/13/MySQL-优化篇之SQL优化/" itemprop="commentsCount" ></span>
                </a>
              
            
          

          
          
             <span id="/2013/11/13/MySQL-优化篇之SQL优化/" class="leancloud_visitors" data-flag-title="MySQL 优化篇之SQL优化">
               <span class="post-meta-divider">|</span>
               <span class="post-meta-item-icon">
                 <i class="fa fa-eye"></i>
               </span>
               
                 <span class="post-meta-item-text">阅读次数 </span>
               
                 <span class="leancloud-visitors-count"></span>
             </span>
          

          

          

          

        </div>
      </header>
    

    <div class="post-body" itemprop="articleBody">

      
      

      
        
          
            <h2 id="SQL优化"><a href="#SQL优化" class="headerlink" title="SQL优化"></a>SQL优化</h2><h3 id="优化SQL的一般步骤"><a href="#优化SQL的一般步骤" class="headerlink" title="优化SQL的一般步骤"></a>优化SQL的一般步骤</h3><ul>
<li><p>1.通过show status和应用特点了解各种SQL的执行频率</p>
<blockquote>
<p>通过SHOW STATUS可以提供服务器状态信息，也可以使用<code>mysqladmin extended-status</code>命令获得。SHOW STATUS可以根据需要显示session级别的统计结果和global级别的统计结果。<br>以下几个参数对Myisam和Innodb存储引擎都计数：<br>1). Com_select 执行select操作的次数，一次查询只累加1；<br>2). Com_insert 执行insert操作的次数，对于批量插入的insert操作，只累加一次；<br>3). Com_update 执行update操作的次数；<br>4). Com_delete 执行delete操作的次数；<br>以下几个参数是针对Innodb存储引擎计数的，累加的算法也略有不同：<br>1). Innodb_rows_read select查询返回的行数；<br>2). Innodb_rows_inserted执行Insert操作插入的行数；<br>3). Innodb_rows_updated 执行update操作更新的行数；<br>4). Innodb_rows_deleted 执行delete操作删除的行数；<br>通过以上几个参数，可以很容易的了解当前数据库的应用是以插入更新为主还是以查询操作为主，以及各种类型的SQL大致的执行比例是多少。对于更新操作的计数，是对执行次数的计数，不论提交还是回滚都会累加。<br>对于事务型的应用，通过Com_commit和Com_rollback可以了解事务提交和回滚的情况，对于回滚操作非常频繁的数据库，可能意味着应用编写存在问题。<br>此外，以下几个参数便于我们了解数据库的基本情况：<br>1). Connections 试图连接Mysql服务器的次数<br>2). Uptime    服务器工作时间<br>3). Slow_queries 慢查询的次数</p>
</blockquote>
</li>
<li><p>2.定位执行效率较低的SQL语句</p>
<blockquote>
<p>可以通过以下两种方式定位执行效率较低的SQL语句：<br>1).可以通过慢查询日志定位那些执行效率较低的sql语句，用–log-slow-queries[=file_name]选项启动时，mysqld写一个包含所有执行时间超过long_query_time秒的SQL语句的日志文件。可以链接到管理维护中的相关章节。</p>
</blockquote>
</li>
<li><p>3.通过EXPLAIN分析低效SQL的执行计划</p>
<blockquote>
<p>通过以上步骤查询到效率低的SQL后，我们可以通过explain或者desc 获取MySQL如何执行SELECT语句的信息，包括select语句执行过程表如何连接和连接的次序。  explain可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的SELECT。<br><code>mysql&gt;expain select * from table;</code><br>select_type： select 类型<br>table：   输出结果集的表<br>type：     表示表的连接类型, 当表中仅有一行是type的值为system是最佳的连接类型； 当select操作中使用索引进行表连接时type的值为ref；  当select的表连接没有使用索引时，经常会看到type的值为ALL，表示对该表进行了全表扫描，这时需要考虑通过创建索引来提高表连接的效率。<br> possible_keys： 表示查询时,可以使用的索引列.<br>key：    表示使用的索引<br>key_len：  索引长度<br>rows：   扫描范围<br>Extra：     执行情况的说明和描述</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">+----+-------------+------------+--------+---------------+------+---------+------+------+---------------------+</div><div class="line">| id | select_type | table      | type   | possible_keys | key  | key_len | ref  | rows | Extra               |</div><div class="line">+----+-------------+------------+--------+---------------+------+---------+------+------+---------------------+</div><div class="line">|  1 | SIMPLE      | tab_serial | system | NULL          | NULL | NULL    | NULL |    0 | const row not found |</div><div class="line">+----+-------------+------------+--------+---------------+------+---------+------+------+---------------------+</div></pre></td></tr></table></figure>
</blockquote>
</li>
<li><p>4.确定问题，并采取相应的优化措施</p>
<blockquote>
<p>经过以上步骤，基本可以确认问题出现的原因，可以根据情况采取相应的措施，进行优化提高执行的效率。</p>
</blockquote>
</li>
</ul>
<h3 id="索引问题"><a href="#索引问题" class="headerlink" title="索引问题"></a>索引问题</h3><ul>
<li><p>1.索引的存储分类</p>
<blockquote>
<p>myisam表的数据文件和索引文件是自动分开的；innodb的数据和索引是存储在同一个表空间里面，但可以有多个文件组成。<br>索引的存储类型目前只有两种（btree和hash），具体和表的模式相关：<br>myisam     btree<br>innodb     btree<br>memory/heap hash，btree<br>mysql目前不支持函数索引，只能对列的前一部分（length）进行索引，例：<br>create index ind_test on table1(name(5))，<br>对于char和varchar列，使用前缀索引将大大节省空间。</p>
</blockquote>
</li>
<li><p>2.MySQL如何使用索引</p>
<blockquote>
<p>索引用于快速找出在某个列中有一特定值的行。对相关列使用索引是提高SELECT操作性能的最佳途径。 查询要使用索引最主要的条件是查询条件中需要使用索引关键字，如果是多列索引，那么只有查询条件使用了多列关键字最左边的前缀时，才可以使用索引，否则将不能使用索引。<br>下列情况下，Mysql不会使用已有的索引：<br>1). 如果mysql估计使用索引比全表扫描更慢，则不使用索引。<br>例如：如果key_part1均匀分布在1 和100之间，下列查询中使用索引就不是很好：<br>SELECT * FROM table_name where key_part1 &gt; 1 and key_part1 &lt; 90<br>2). 如果使用heap表并且where条件中不用＝索引列，其他&gt; 、&lt;、 &gt;=、 &lt;=均不使用索引；<br>3). 如果不是索引列的第一部分；<br>4). 如果like是以％开始；<br>5). 对where后边条件为字符串的一定要加引号，字符串如果为数字mysql会自动转为字符串，但是 不使用索引。</p>
</blockquote>
</li>
<li><p>3.查看索引使用情况</p>
<blockquote>
<p>如果索引正在工作，Handler_read_key的值将很高，这个值代表了一个行被索引值读的次数，很低的值表明增加索引得到的性能改善不高，因为索引并不经常使用。  Handler_read_rnd_next的值高则意味着查询运行低效，并且应该建立索引补救。这个值的含义是在数据文件中读下一行的请求数。如果你正进行大量的表扫描，该值较高。通常说明表索引不正确或写入的查询没有利用索引。<br>语法：  mysql&gt; show status like ‘Handler_read%’; </p>
</blockquote>
</li>
</ul>
<h3 id="两个简单实用的优化方法"><a href="#两个简单实用的优化方法" class="headerlink" title="两个简单实用的优化方法"></a>两个简单实用的优化方法</h3><ul>
<li><p>1.定期分析表</p>
<blockquote>
<p>ANALYZE TABLE 语法：<br><code>ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...</code><br>本语句用于分析和存储表的关键字分布。在分析期间，使用一个读取锁定对表进行锁定。这对于MyISAM, BDB和InnoDB表有作用。对于MyISAM表，本语句与使用myisamchk -a相当。<br>CHECK TABLE 语法：<br><code>CHECK TABLE tbl_name [, tbl_name] ... [option] ...   option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}</code><br>检查一个或多个表是否有错误。CHECK TABLE对MyISAM和InnoDB表有作用。对于MyISAM表，关键字统计数据被更新。  CHECK TABLE也可以检查视图是否有错误，比如在视图定义中被引用的表已不存在。<br>CHECKSUM TABLE 语法：<br><code>CHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]</code><br>报告一个表校验和。</p>
</blockquote>
</li>
<li><p>2.使用optimize table</p>
<blockquote>
<p>OPTIMIZE TABLE  语法：<br><code>OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...</code><br>如果已经删除了表的一大部分，或者如果您已经对含有可变长度行的表（含有VARCHAR, BLOB或TEXT列的表）进行了很多更改，则应使用OPTIMIZE TABLE。被删除的记录被保持在链接清单中，后续的INSERT操作会重新使用旧的记录位置。您可以使用OPTIMIZE TABLE来重新利用未使用的空间，并整理数据文件的碎片。  OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。</p>
</blockquote>
</li>
</ul>
<h3 id="常用SQL的优化"><a href="#常用SQL的优化" class="headerlink" title="常用SQL的优化"></a>常用SQL的优化</h3><ul>
<li><p>1.大批量插入数据</p>
<blockquote>
<p>1). 对于Myisam类型的表，可以通过以下方式快速的导入大量的数据。<br><code>ALTER TABLE tblname DISABLE KEYS;
loading the data  
ALTER TABLE tblname ENABLE KEYS;</code><br>这两个命令用来打开或者关闭Myisam表非唯一索引的更新。在导入大量的数据到一个非空的Myisam表时，通过设置这两个命令，可以提高导入的效率。对于导入大量数据到一个空的Myisam表，默认就是先导入数据然后才创建索引的，所以不用进行设置。<br>2). 而对于Innodb类型的表，这种方式并不能提高导入数据的效率。对于Innodb类型的表，我们有 以下几种方式可以提高导入的效率：<br>a. 因为Innodb类型的表是按照主键的顺序保存的，所以将导入的数据按照主键的顺序排列，可以有效的提高导入数据的效率。如果Innodb表没有主键，那么系统会默认创建一个内部列作为主键，所以如果可以给表创建一个主键，将可以利用这个优势提高导入数据的效率。<br>b. 在导入数据前执行SET UNIQUE_CHECKS=0，关闭唯一性校验，在导入结束后执行SET UNIQUE_CHECKS=1，恢复唯一性校验，可以提高导入的效率。<br>c. 如果应用使用自动提交的方式，建议在导入前执行SET AUTOCOMMIT=0，关闭自动提交，导入结束后再执行SET AUTOCOMMIT=1，打开自动提交，也可以提高导入的效率。</p>
</blockquote>
</li>
<li><p>2.优化insert语句</p>
<blockquote>
<p>1). 如果你同时从同一客户插入很多行，使用多个值表的INSERT语句。这比使用分开INSERT语句快 (在一些情况中几倍)。<br><code>Insert into test values(1,2),(1,3),(1,4)„</code><br>2). 如果你从不同客户插入很多行，能通过使用INSERT DELAYED语句得到更高的速度。Delayed的含 义是让insert 语句马上执行，其实数据都被放在内存的队列中，并没有真正写入磁盘；这比每条语句分别插入要快的多；LOW_PRIORITY刚好相反，在所有其他用户对表的读写完后才进行插入；<br>3). 将索引文件和数据文件分在不同的磁盘上存放（利用建表中的选项）；<br>4). 如果进行批量插入，可以增加bulk_insert_buffer_size变量值的方法来提高速度，但是，这只 能对myisam表使用；<br>5). 当从一个文本文件装载一个表时，使用LOAD DATA INFILE。这通常比使用很多INSERT语句快20 倍；<br>6). 根据应用情况使用replace语句代替insert；<br>7). 根据应用情况使用ignore关键字忽略重复记录。</p>
</blockquote>
</li>
<li><p>3.优化group by语句</p>
<blockquote>
<p>默认情况下，MySQL排序所有GROUP BY col1，col2，….。查询的方法如同在查询中指定ORDER BY  col1，col2，…。如果显式包括一个包含相同的列的ORDER BY子句，MySQL可以毫不减速地对它进行优化，尽管仍然进行排序。  如果查询包括GROUP BY但你想要避免排序结果的消耗，你可以指定ORDER BY NULL禁止排序。<br>例如：<code>INSERT INTO foo  SELECT a, COUNT(*) FROM bar GROUP BY a ORDER BY NULL;</code></p>
</blockquote>
</li>
<li><p>4.优化order by语句</p>
<blockquote>
<p>在某些情况中，MySQL可以使用一个索引来满足ORDER BY子句，而不需要额外的排序。where条件和order by使用相同的索引，并且order by的顺序和索引顺序相同，并且order by的字段都是升序或者都是降序。<br>例如：下列sql可以使用索引。<br><code>SELECT * FROM t1 ORDER BY key_part1,key_part2,...   
SELECT * FROM t1 WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC;
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC;</code><br>但是以下情况不使用索引：<br><code>SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC；</code><br>–order by的字段混合ASC和DESC<br><code>SELECT * FROM t1 WHERE key2=constant ORDER BY key1；</code><br>–用于查询行的关键字与ORDER BY中所使用的不相同<br><code>SELECT * FROM t1 ORDER BY key1, key2；</code><br>–对不同的关键字使用ORDER BY：</p>
</blockquote>
</li>
<li><p>5.优化join语句</p>
<blockquote>
<p>Mysql4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果，然后把这个结果作为过滤条件用在另一个查询中。使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作，同时也可以避免事务或者表锁死，并且写起来也很容易。但是，有些情况下，子查询可以被更有效率的连接(JOIN).. 替代。  假设我们要将所有没有订单记录的用户取出来，可以用下面这个查询完成:<br><code>SELECT * FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo )</code><br>如果使用连接(JOIN).. 来完成这个查询工作，速度将会快很多。尤其是当salesinfo表中对CustomerID建有索引的话，性能将会更好，查询如下:<br><code>SELECT * FROM customerinfo   LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo.CustomerID  WHERE salesinfo.CustomerID IS NULL</code><br>连接(JOIN).. 之所以更有效率一些，是因为 MySQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。</p>
</blockquote>
</li>
<li><p>6.mysql如何优化or条件<br>   对于or子句，如果要利用索引，则or之间的每个条件列都必须用到索引；如果没有索引，则应该考虑增加索引。</p>
</li>
<li><p>7查询优先还是更新（insert、update、delete）优先</p>
<blockquote>
<p>MySQL还允许改变语句调度的优先级，它可以使来自多个客户端的查询更好地协作，这样单个客户端就不会由于锁定而等待很长时间。改变优先级还可以确保特定类型的查询被处理得更快。  我们首先应该确定应用的类型，判断应用是以查询为主还是以更新为主的，是确保查询效率还是确保更新的效率，决定是查询优先还是更新优先。  下面我们提到的改变调度策略的方法主要是针对Myisam存储引擎的，对于Innodb存储引擎，语句的执行是由获得行锁的顺序决定的。  MySQL的默认的调度策略可用总结如下：<br>1). 写入操作优先于读取操作。<br>2). 对某张数据表的写入操作某一时刻只能发生一次，写入请求按照它们到达的次序来处理。<br>3). 对某张数据表的多个读取操作可以同时地进行。 MySQL提供了几个语句调节符，允许你修改它的调度策略：<br>a. LOW_PRIORITY关键字应用于DELETE、INSERT、LOAD DATA、REPLACE和UPDATE。<br>b. HIGH_PRIORITY关键字应用于SELECT和INSERT语句。<br>c. DELAYED关键字应用于INSERT和REPLACE语句。<br>如果写入操作是一个LOW_PRIORITY（低优先级）请求，那么系统就不会认为它的优先级高于读取操作。在这种情况下，如果写入者在等待的时候，第二个读取者到达了，那么就允许第二个读取者插到写入者之前。只有在没有其它的读取者的时候，才允许写入者开始操作。这种调度修改可能存在LOW_PRIORITY写入操作永远被阻塞的情况。  SELECT查询的HIGH_PRIORITY（高优先级）关键字也类似。它允许SELECT插入正在等待的写入操作之前，即使在正常情况下写入操作的优先级更高。另外一种影响是，高优先级的SELECT在正常的SELECT语句之前执行，因为这些语句会被写入操作阻塞。  如果你希望所有支持LOW_PRIORITY选项的语句都默认地按照低优先级来处理，那么请使用–low-priority-updates选项来启动服务器。通过使用INSERT HIGH_PRIORITY来把INSERT语句提高到正常的写入优先级，可以消除该选项对单个INSERT语句的影响。</p>
</blockquote>
</li>
<li><p>8.使用SQL提示<br><code>SELECT SQL_BUFFER_RESULTS ...</code></p>
<blockquote>
<p>将强制MySQL生成一个临时结果集。只要所有临时结果集生成后，所有表上的锁定均被释放。这能在遇到表锁定问题时或要花很长时间将结果传给客户端时有所帮助。    当处理一个会让客户端耗费点时间才能处理的大结果集时，可以考虑使用SQL_BUFFER_RESULT 提示字。这样可以告诉MySQL将结果集保存在一个临时表中，这样可以尽早的释放各种锁。<br><code>USE INDEX</code><br>在你查询语句中表名的后面，添加USE INDEX 来提供你希望MySQ去参考的索引列表，就可以让MySQL不再考虑其他可用的索引。<br><code>Eg:SELECT * FROM mytable USE INDEX (mod_time, name) ...</code><br><code>IGNORE INDEX</code><br>如果你只是单纯的想让MySQL忽略一个或者多个索引，可以使用IGNORE INDEX作为Hint。<br><code>Eg:SELECT * FROM mytale IGNORE INDEX (priority) ...</code><br><code>FORCE INDEX</code><br>为强制MySQL使用一个特定的索引，可在查询中使用FORCE INDEX作为Hint。<br><code>Eg:SELECT * FROM mytable FORCE INDEX (mod_time) ...</code></p>
</blockquote>
</li>
</ul>
<h3 id="其他优化措施"><a href="#其他优化措施" class="headerlink" title="其他优化措施"></a>其他优化措施</h3><ul>
<li>使用持久的连接数据库以避免连接开销。</li>
<li>经常检查所有查询确实使用了必要的索引。  </li>
<li>避免在频繁更新的表上执行复杂的SELECT查询，以避免与锁定表有关的由于读、写冲突发生的问题。</li>
<li>对于没有删除的行操作的MyISAM表，插入操作和查询操作可以并行进行，因为没有删除操作的表查 询期间不会阻塞插入操作．对于确实需要执行删除操作的表，尽量在空闲时间进行批量删除操作，避免阻塞其他操作。  </li>
<li>充分利用列有默认值的事实。只有当插入的值不同于默认值时，才明确地插入值。这减少MySQL需 要做的语法分析从而提高插入速度。</li>
<li>对经常访问的可以重构的数据使用内存表，可以显著提高访问的效率。  </li>
<li>通过复制可以提高某些操作的性能。可以在复制服务器中分布客户的检索以均分负载。为了防止备份 期间对应用的影响，可以在复制服务器上执行备份操作。  </li>
<li>表的字段尽量不使用自增长变量，在高并发情况下该字段的自增可能对效率有比较大的影响，推荐通 过应用来实现字段的自增长。 </li>
</ul>

          
        
      
    </div>

    <div>
      
    </div>

    <div align="center">
      
    </div>

    <div>
      
    </div>

    <footer class="post-footer">
      

      

      

      
      
        <div class="post-eof"></div>
      
    </footer>
  </article>


    
  </section>

  
  <nav class="pagination">
    <a class="extend prev" rel="prev" href="/page/13/"><i class="fa fa-angle-left"></i></a><a class="page-number" href="/">1</a><span class="space">&hellip;</span><a class="page-number" href="/page/13/">13</a><span class="page-number current">14</span>
  </nav>



          </div>
          


          

        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    <div class="sidebar-inner">

      

      

      <section class="site-overview sidebar-panel sidebar-panel-active">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
          <img class="site-author-image" itemprop="image"
               src="/images/avatar.png"
               alt="Ewan" />
          <p class="site-author-name" itemprop="name">Ewan</p>
           
              <p class="site-description motion-element" itemprop="description">The more effort ,the more lucky</p>
          
        </div>
        <nav class="site-state motion-element">

          
            <div class="site-state-item site-state-posts">
              <a href="/">
                <span class="site-state-item-count">138</span>
                <span class="site-state-item-name">日志</span>
              </a>
            </div>
          

          
            
            
            <div class="site-state-item site-state-categories">
              <a href="/categories/index.html">
                <span class="site-state-item-count">19</span>
                <span class="site-state-item-name">分类</span>
              </a>
            </div>
          

          
            
            
            <div class="site-state-item site-state-tags">
              <a href="/tags/index.html">
                <span class="site-state-item-count">40</span>
                <span class="site-state-item-name">标签</span>
              </a>
            </div>
          

        </nav>

        
          <div class="feed-link motion-element">
            <a href="/atom.xml" rel="alternate">
              <i class="fa fa-rss"></i>
              RSS
            </a>
          </div>
        

        <div class="links-of-author motion-element">
          
            
              <span class="links-of-author-item">
                <a href="http://resume.iooeo.com/" target="_blank" title="Resume">
                  
                    <i class="fa fa-fw fa-handshake-o"></i>
                  
                  Resume
                </a>
              </span>
            
              <span class="links-of-author-item">
                <a href="http://weibo.com/u/2120563685" target="_blank" title="Weibo">
                  
                    <i class="fa fa-fw fa-weibo"></i>
                  
                  Weibo
                </a>
              </span>
            
              <span class="links-of-author-item">
                <a href="https://github.com/yangyiyuan" target="_blank" title="GitHub">
                  
                    <i class="fa fa-fw fa-github"></i>
                  
                  GitHub
                </a>
              </span>
            
              <span class="links-of-author-item">
                <a href="mailto:654846126@qq.com" target="_blank" title="Email">
                  
                    <i class="fa fa-fw fa-envelope"></i>
                  
                  Email
                </a>
              </span>
            
              <span class="links-of-author-item">
                <a href="http://www.firedata.cn/" target="_blank" title="Company">
                  
                    <i class="fa fa-fw fa-users"></i>
                  
                  Company
                </a>
              </span>
            
              <span class="links-of-author-item">
                <a href="http://game.iooeo.com/" target="_blank" title="MyGame">
                  
                    <i class="fa fa-fw fa-gamepad"></i>
                  
                  MyGame
                </a>
              </span>
            
          
        </div>

        
        
          <div class="cc-license motion-element" itemprop="license">
            <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" class="cc-opacity" target="_blank">
              <img src="/images/cc-by-nc-sa.svg" alt="Creative Commons" />
            </a>
          </div>
        

        
        
          <div class="links-of-blogroll motion-element links-of-blogroll-inline">
            <div class="links-of-blogroll-title">
              <i class="fa  fa-fw fa-globe"></i>
              
            </div>
            <ul class="links-of-blogroll-list">
              
                <li class="links-of-blogroll-item">
                  <a href="http://www.firedata.cn/" title="在职-意静科技" target="_blank">在职-意静科技</a>
                </li>
              
                <li class="links-of-blogroll-item">
                  <a href="http://www.xd.com/" title="曾供职-心动网络" target="_blank">曾供职-心动网络</a>
                </li>
              
                <li class="links-of-blogroll-item">
                  <a href="http://www.mobase.cn/" title="曾供职-翼成科技" target="_blank">曾供职-翼成科技</a>
                </li>
              
                <li class="links-of-blogroll-item">
                  <a href="http://www.blueberrytech.cn/base/" title="曾供职-蓝莓盈动" target="_blank">曾供职-蓝莓盈动</a>
                </li>
              
                <li class="links-of-blogroll-item">
                  <a href="http://old.tumiaoya.com/" title="白宝冰-博客" target="_blank">白宝冰-博客</a>
                </li>
              
                <li class="links-of-blogroll-item">
                  <a href="http://www.liuxiaojia.cc/" title="刘佳-博客" target="_blank">刘佳-博客</a>
                </li>
              
                <li class="links-of-blogroll-item">
                  <a href="http://www.pythondev.org" title="曹帅军-博客" target="_blank">曹帅军-博客</a>
                </li>
              
                <li class="links-of-blogroll-item">
                  <a href="http://www.dannisi.xin" title="李丹-博客" target="_blank">李丹-博客</a>
                </li>
              
                <li class="links-of-blogroll-item">
                  <a href="https://xcx.iooeo.com/" title="Cow's Love 工作室" target="_blank">Cow's Love 工作室</a>
                </li>
              
            </ul>
          </div>
        

        


      </section>

      

      

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        <script async src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<div class="copyright" >
  
  &copy;  2013 - 
  <span itemprop="copyrightYear">2018</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">Ewan</span>
  &nbsp;
  <span id="busuanzi_container_site_uv">
      <i class="fa fa-user-md"></i>
      本站访客数:<span id="busuanzi_value_site_pv"></span>
    </span>
</div>


<div class="powered-by">
  <span class="links-of-author-item">
    <a href="http://www.miitbeian.gov.cn/" target="_blank" title="备案号">
    沪ICP备17032516号-1
    </a>
  </span>
</div>

<div class="powered-by">
  <span class="links-of-author-item">
    <a href="https://github.com/yangyiyuan" target="_blank" title="GitHub">
    <i class="fa fa-github-alt"></i>
    GitHub
    </a>
  </span>
</div>

<div class="theme-info">
  <span class="links-of-author-item">
    <a href="http://www.iooeo.com/about/" target="_blank" title="杨依园">
    <i class="fa fa-fw fa-hand-o-right"></i>
    做一个有思想的开发者---杨依园
    </a>
  </span>


        

        
      </div>
    </footer>

    
      <div class="back-to-top">
        <i class="fa fa-arrow-up"></i>
        
      </div>
    

  </div>

  

<script type="text/javascript">
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>









  












  
  <script type="text/javascript" src="/lib/jquery/index.js?v=2.1.3"></script>

  
  <script type="text/javascript" src="/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>

  
  <script type="text/javascript" src="/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>

  
  <script type="text/javascript" src="/lib/velocity/velocity.min.js?v=1.2.1"></script>

  
  <script type="text/javascript" src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>

  
  <script type="text/javascript" src="/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>


  


  <script type="text/javascript" src="/js/src/utils.js?v=5.1.1"></script>

  <script type="text/javascript" src="/js/src/motion.js?v=5.1.1"></script>



  
  

  
    <script type="text/javascript" src="/js/src/scrollspy.js?v=5.1.1"></script>
<script type="text/javascript" src="/js/src/post-details.js?v=5.1.1"></script>

  

  


  <script type="text/javascript" src="/js/src/bootstrap.js?v=5.1.1"></script>



  


  




	





  





  





  




  
    <script id="cy_cmt_num" src="https://changyan.sohu.com/upload/plugins/plugins.list.count.js?clientId=cyt8r7gzu"></script>
  



  

  <script type="text/javascript">
    // Popup Window;
    var isfetched = false;
    var isXml = true;
    // Search DB path;
    var search_path = "search.xml";
    if (search_path.length === 0) {
      search_path = "search.xml";
    } else if (/json$/i.test(search_path)) {
      isXml = false;
    }
    var path = "/" + search_path;
    // monitor main search box;

    var onPopupClose = function (e) {
      $('.popup').hide();
      $('#local-search-input').val('');
      $('.search-result-list').remove();
      $('#no-result').remove();
      $(".local-search-pop-overlay").remove();
      $('body').css('overflow', '');
    }

    function proceedsearch() {
      $("body")
        .append('<div class="search-popup-overlay local-search-pop-overlay"></div>')
        .css('overflow', 'hidden');
      $('.search-popup-overlay').click(onPopupClose);
      $('.popup').toggle();
      var $localSearchInput = $('#local-search-input');
      $localSearchInput.attr("autocapitalize", "none");
      $localSearchInput.attr("autocorrect", "off");
      $localSearchInput.focus();
    }

    // search function;
    var searchFunc = function(path, search_id, content_id) {
      'use strict';

      // start loading animation
      $("body")
        .append('<div class="search-popup-overlay local-search-pop-overlay">' +
          '<div id="search-loading-icon">' +
          '<i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>' +
          '</div>' +
          '</div>')
        .css('overflow', 'hidden');
      $("#search-loading-icon").css('margin', '20% auto 0 auto').css('text-align', 'center');

      $.ajax({
        url: path,
        dataType: isXml ? "xml" : "json",
        async: true,
        success: function(res) {
          // get the contents from search data
          isfetched = true;
          $('.popup').detach().appendTo('.header-inner');
          var datas = isXml ? $("entry", res).map(function() {
            return {
              title: $("title", this).text(),
              content: $("content",this).text(),
              url: $("url" , this).text()
            };
          }).get() : res;
          var input = document.getElementById(search_id);
          var resultContent = document.getElementById(content_id);
          var inputEventFunction = function() {
            var searchText = input.value.trim().toLowerCase();
            var keywords = searchText.split(/[\s\-]+/);
            if (keywords.length > 1) {
              keywords.push(searchText);
            }
            var resultItems = [];
            if (searchText.length > 0) {
              // perform local searching
              datas.forEach(function(data) {
                var isMatch = false;
                var hitCount = 0;
                var searchTextCount = 0;
                var title = data.title.trim();
                var titleInLowerCase = title.toLowerCase();
                var content = data.content.trim().replace(/<[^>]+>/g,"");
                var contentInLowerCase = content.toLowerCase();
                var articleUrl = decodeURIComponent(data.url);
                var indexOfTitle = [];
                var indexOfContent = [];
                // only match articles with not empty titles
                if(title != '') {
                  keywords.forEach(function(keyword) {
                    function getIndexByWord(word, text, caseSensitive) {
                      var wordLen = word.length;
                      if (wordLen === 0) {
                        return [];
                      }
                      var startPosition = 0, position = [], index = [];
                      if (!caseSensitive) {
                        text = text.toLowerCase();
                        word = word.toLowerCase();
                      }
                      while ((position = text.indexOf(word, startPosition)) > -1) {
                        index.push({position: position, word: word});
                        startPosition = position + wordLen;
                      }
                      return index;
                    }

                    indexOfTitle = indexOfTitle.concat(getIndexByWord(keyword, titleInLowerCase, false));
                    indexOfContent = indexOfContent.concat(getIndexByWord(keyword, contentInLowerCase, false));
                  });
                  if (indexOfTitle.length > 0 || indexOfContent.length > 0) {
                    isMatch = true;
                    hitCount = indexOfTitle.length + indexOfContent.length;
                  }
                }

                // show search results

                if (isMatch) {
                  // sort index by position of keyword

                  [indexOfTitle, indexOfContent].forEach(function (index) {
                    index.sort(function (itemLeft, itemRight) {
                      if (itemRight.position !== itemLeft.position) {
                        return itemRight.position - itemLeft.position;
                      } else {
                        return itemLeft.word.length - itemRight.word.length;
                      }
                    });
                  });

                  // merge hits into slices

                  function mergeIntoSlice(text, start, end, index) {
                    var item = index[index.length - 1];
                    var position = item.position;
                    var word = item.word;
                    var hits = [];
                    var searchTextCountInSlice = 0;
                    while (position + word.length <= end && index.length != 0) {
                      if (word === searchText) {
                        searchTextCountInSlice++;
                      }
                      hits.push({position: position, length: word.length});
                      var wordEnd = position + word.length;

                      // move to next position of hit

                      index.pop();
                      while (index.length != 0) {
                        item = index[index.length - 1];
                        position = item.position;
                        word = item.word;
                        if (wordEnd > position) {
                          index.pop();
                        } else {
                          break;
                        }
                      }
                    }
                    searchTextCount += searchTextCountInSlice;
                    return {
                      hits: hits,
                      start: start,
                      end: end,
                      searchTextCount: searchTextCountInSlice
                    };
                  }

                  var slicesOfTitle = [];
                  if (indexOfTitle.length != 0) {
                    slicesOfTitle.push(mergeIntoSlice(title, 0, title.length, indexOfTitle));
                  }

                  var slicesOfContent = [];
                  while (indexOfContent.length != 0) {
                    var item = indexOfContent[indexOfContent.length - 1];
                    var position = item.position;
                    var word = item.word;
                    // cut out 100 characters
                    var start = position - 20;
                    var end = position + 80;
                    if(start < 0){
                      start = 0;
                    }
                    if (end < position + word.length) {
                      end = position + word.length;
                    }
                    if(end > content.length){
                      end = content.length;
                    }
                    slicesOfContent.push(mergeIntoSlice(content, start, end, indexOfContent));
                  }

                  // sort slices in content by search text's count and hits' count

                  slicesOfContent.sort(function (sliceLeft, sliceRight) {
                    if (sliceLeft.searchTextCount !== sliceRight.searchTextCount) {
                      return sliceRight.searchTextCount - sliceLeft.searchTextCount;
                    } else if (sliceLeft.hits.length !== sliceRight.hits.length) {
                      return sliceRight.hits.length - sliceLeft.hits.length;
                    } else {
                      return sliceLeft.start - sliceRight.start;
                    }
                  });

                  // select top N slices in content

                  var upperBound = parseInt('1');
                  if (upperBound >= 0) {
                    slicesOfContent = slicesOfContent.slice(0, upperBound);
                  }

                  // highlight title and content

                  function highlightKeyword(text, slice) {
                    var result = '';
                    var prevEnd = slice.start;
                    slice.hits.forEach(function (hit) {
                      result += text.substring(prevEnd, hit.position);
                      var end = hit.position + hit.length;
                      result += '<b class="search-keyword">' + text.substring(hit.position, end) + '</b>';
                      prevEnd = end;
                    });
                    result += text.substring(prevEnd, slice.end);
                    return result;
                  }

                  var resultItem = '';

                  if (slicesOfTitle.length != 0) {
                    resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + highlightKeyword(title, slicesOfTitle[0]) + "</a>";
                  } else {
                    resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + title + "</a>";
                  }

                  slicesOfContent.forEach(function (slice) {
                    resultItem += "<a href='" + articleUrl + "'>" +
                      "<p class=\"search-result\">" + highlightKeyword(content, slice) +
                      "...</p>" + "</a>";
                  });

                  resultItem += "</li>";
                  resultItems.push({
                    item: resultItem,
                    searchTextCount: searchTextCount,
                    hitCount: hitCount,
                    id: resultItems.length
                  });
                }
              })
            };
            if (keywords.length === 1 && keywords[0] === "") {
              resultContent.innerHTML = '<div id="no-result"><i class="fa fa-search fa-5x" /></div>'
            } else if (resultItems.length === 0) {
              resultContent.innerHTML = '<div id="no-result"><i class="fa fa-frown-o fa-5x" /></div>'
            } else {
              resultItems.sort(function (resultLeft, resultRight) {
                if (resultLeft.searchTextCount !== resultRight.searchTextCount) {
                  return resultRight.searchTextCount - resultLeft.searchTextCount;
                } else if (resultLeft.hitCount !== resultRight.hitCount) {
                  return resultRight.hitCount - resultLeft.hitCount;
                } else {
                  return resultRight.id - resultLeft.id;
                }
              });
              var searchResultList = '<ul class=\"search-result-list\">';
              resultItems.forEach(function (result) {
                searchResultList += result.item;
              })
              searchResultList += "</ul>";
              resultContent.innerHTML = searchResultList;
            }
          }

          if ('auto' === 'auto') {
            input.addEventListener('input', inputEventFunction);
          } else {
            $('.search-icon').click(inputEventFunction);
            input.addEventListener('keypress', function (event) {
              if (event.keyCode === 13) {
                inputEventFunction();
              }
            });
          }

          // remove loading animation
          $(".local-search-pop-overlay").remove();
          $('body').css('overflow', '');

          proceedsearch();
        }
      });
    }

    // handle and trigger popup window;
    $('.popup-trigger').click(function(e) {
      e.stopPropagation();
      if (isfetched === false) {
        searchFunc(path, 'local-search-input', 'local-search-result');
      } else {
        proceedsearch();
      };
    });

    $('.popup-btn-close').click(onPopupClose);
    $('.popup').click(function(e){
      e.stopPropagation();
    });
    $(document).on('keyup', function (event) {
      var shouldDismissSearchPopup = event.which === 27 &&
        $('.search-popup').is(':visible');
      if (shouldDismissSearchPopup) {
        onPopupClose();
      }
    });
  </script>





  

  
  <script src="https://cdn1.lncld.net/static/js/av-core-mini-0.6.1.js"></script>
  <script>AV.initialize("ilQJ7Pnw4P9y1I1cQlaOoggK-gzGzoHsz", "uwSCLmjySIQiXUJHwkhc5XdT");</script>
  <script>
    function showTime(Counter) {
      var query = new AV.Query(Counter);
      var entries = [];
      var $visitors = $(".leancloud_visitors");

      $visitors.each(function () {
        entries.push( $(this).attr("id").trim() );
      });

      query.containedIn('url', entries);
      query.find()
        .done(function (results) {
          var COUNT_CONTAINER_REF = '.leancloud-visitors-count';

          if (results.length === 0) {
            $visitors.find(COUNT_CONTAINER_REF).text(0);
            return;
          }

          for (var i = 0; i < results.length; i++) {
            var item = results[i];
            var url = item.get('url');
            var time = item.get('time');
            var element = document.getElementById(url);

            $(element).find(COUNT_CONTAINER_REF).text(time);
          }
          for(var i = 0; i < entries.length; i++) {
            var url = entries[i];
            var element = document.getElementById(url);
            var countSpan = $(element).find(COUNT_CONTAINER_REF);
            if( countSpan.text() == '') {
              countSpan.text(0);
            }
          }
        })
        .fail(function (object, error) {
          console.log("Error: " + error.code + " " + error.message);
        });
    }

    function addCount(Counter) {
      var $visitors = $(".leancloud_visitors");
      var url = $visitors.attr('id').trim();
      var title = $visitors.attr('data-flag-title').trim();
      var query = new AV.Query(Counter);

      query.equalTo("url", url);
      query.find({
        success: function(results) {
          if (results.length > 0) {
            var counter = results[0];
            counter.fetchWhenSave(true);
            counter.increment("time");
            counter.save(null, {
              success: function(counter) {
                var $element = $(document.getElementById(url));
                $element.find('.leancloud-visitors-count').text(counter.get('time'));
              },
              error: function(counter, error) {
                console.log('Failed to save Visitor num, with error message: ' + error.message);
              }
            });
          } else {
            var newcounter = new Counter();
            /* Set ACL */
            var acl = new AV.ACL();
            acl.setPublicReadAccess(true);
            acl.setPublicWriteAccess(true);
            newcounter.setACL(acl);
            /* End Set ACL */
            newcounter.set("title", title);
            newcounter.set("url", url);
            newcounter.set("time", 1);
            newcounter.save(null, {
              success: function(newcounter) {
                var $element = $(document.getElementById(url));
                $element.find('.leancloud-visitors-count').text(newcounter.get('time'));
              },
              error: function(newcounter, error) {
                console.log('Failed to create');
              }
            });
          }
        },
        error: function(error) {
          console.log('Error:' + error.code + " " + error.message);
        }
      });
    }

    $(function() {
      var Counter = AV.Object.extend("Counter");
      if ($('.leancloud_visitors').length == 1) {
        addCount(Counter);
      } else if ($('.post-title-link').length > 1) {
        showTime(Counter);
      }
    });
  </script>



  

  

  

  

  

<script src="/live2dw/lib/L2Dwidget.min.js?0c58a1486de42ac6cc1c59c7d98ae887"></script><script>L2Dwidget.init({"pluginJsPath":"lib/","pluginModelPath":"assets/","pluginRootPath":"live2dw/"});</script></body>
</html>
